public class Alex0929_1
public static void main(String[] args) {
int[] a = {3, 5, 0};
for( int i=0; i<=3, i++ )
System.out.println( a[i] );
} }
以下為執行時錯誤的顯示:
3
5
0
Exception in thread "main"java.util.lang.ArrayIndexOutOfBoundsException:
Index 3 out of bounds for length 3 at Alex0929_1.main(Alex0929_1.java.5)
其中「ArrayIndexOutOfBoundsException」表示超過陣列的索引值。
2.錯誤發生狀況
(1) 陣列超過索引值
(2) 虛值情況
(3) 使用者輸入不正確的類型
(4) 程式運作中的問題
(5) 輸入/輸出異常
(6) 計算錯誤
以下為程式範例:
import java.util.*;
public class Alex0929_2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入分子數:");
int a = scanner.nextInt();
System.out.print("請輸入分母數:");
int b = scanner.nextInt();
if(b! =0)
System.out.println(a+"除以"+b+"等於"+(a/b));
else
System.out.println("除數不可為0");
}
}
在這個程式中,為了避免分母為0導致計算錯誤的狀況,透過增加if判斷式,去避免錯誤的發生。
例外類型 | 產生原因 |
---|---|
ClassNotFoundException | 找不到指南的類別。 |
CloneNotSupportException | 在類別中使用clone()方法,但該類別並未實作Cloneable介面。 |
FileNotFoundException | 找不到指定的檔案。 |
InterruptedException | 另一個執行緒試圖使用interrupt()方法來中斷以停止執行的執行緒。 |
IOEException | 檔案、網路...的輸出、入錯誤實產生的例外。 |
(2) 非受檢例外:通常是發生在程式執行時期,因為資料處理或運算的問題而發生的例外狀況。
例外類型 | 產生原因 |
---|---|
ArithmeticException | 運算式產生的例外,例如:除數為0。 |
ArrayStoreException | 指定陣列內容時產生的錯誤。 |
ArrayIndexOutOfBoundException | 陣列的索引值指定超出索引範圍的錯誤。 |
ClassCastException | 類別轉型錯誤。 |
lllegalArgumentException | 呼叫執行方法時,傳遞錯誤的引數。 |
IndexOutOfBoundsException | 索引使用時超出範圍。 |
NullPointerException | 使用物件時,該物件的參考值為null。 |
NumberFormatException | 將字串轉換為文字時,產生無法轉換的錯誤。 |
SecurityException | 違反安全性的限制。 |